// import { App } from 'vue'
// import { useMainStore } from '@/store';


// // 定义扫码参数类型
// interface ScanOptions {
// 	success ?: (res : any) => void
// 	onlyFromCamera ?: boolean
// 	scanType ?: Array<'barCode' | 'qrCode'>
// }

// const install = (app : App) => {
// 	app.config.globalProperties.$scanPopup = {
// 		openScan(param : ScanOptions = {}) {
// 			// 获取Pinia store实例
// 			const mainStore = useMainStore();
// 			// 获取设备类型
// 			const scanDeviceType = mainStore.systemConfig.sysDeviceInfo.scanDeviceType

// 			switch (scanDeviceType) {
// 				case 'GKJ': // 工控机
// 					uni.navigateTo({
// 						url: "/commonPage/Tool/pageScanByGKJ",
// 						events: {
// 							success: function (res : any) {
// 								param.success && param.success(res)
// 								uni.hideKeyboard()
// 							}
// 						}
// 					})
// 					break

// 				default:
// 					// 普通扫码
// 					mainStore.systemConfig.msgConfig.msgBtnIsHide = true;

// 					uni.scanCode({
// 						onlyFromCamera: param.onlyFromCamera ?? true,
// 						scanType: param.scanType ?? ['qrCode'],
// 						success: function (res) {
// 							param.success && param.success(res)
// 							uni.hideKeyboard()
// 						},
// 						complete: () => {
// 							mainStore.systemConfig.msgConfig.msgBtnIsHide = false;
// 						}
// 					})
// 					break
// 			}
// 		}
// 	}
// }

// // 扩展全局属性类型
// declare module '@vue/runtime-core' {
// 	interface ComponentCustomProperties {
// 		$scanPopup : {
// 			openScan : (param ?: ScanOptions) => void
// 		}
// 	}
// }

// export default install

// 定义扫码参数类型
interface ScanOptions {
	success ?: (res : any) => void
	onlyFromCamera ?: boolean
	scanType ?: Array<'barCode' | 'qrCode'>
}
export const mPageSacnPopup = {
	/**
	 * 打开扫码功能，根据设备类型适配不同的扫码方式
	 * 支持工控机专用扫码页面和普通设备原生扫码功能
	 * @param param - 扫码配置选项，可选参数
	 *                包含success回调、扫码类型限制等配置
	 */
	openScan(param : ScanOptions = {}) {
		// 从本地存储中获取设备信息，并解析出扫码设备类型
		// sysDeviceInfo为预先存储的系统设备信息，其中包含scanDeviceType字段
		const scanDeviceType = JSON.parse(uni.getStorageSync('sysDeviceInfo')).scanDeviceType

		// 根据设备类型选择不同的扫码实现方式
		switch (scanDeviceType) {
			case 'GKJ': // 工控机设备（专用处理逻辑）
				// 导航到工控机专用扫码页面
				uni.navigateTo({
					url: "/commonPage/Tool/pageScanByGKJ", // 工控机扫码页面路径
					// 监听扫码页面返回的成功事件
					events: {
						success: function (res : any) {
							// 若传入了成功回调，则执行并传递扫码结果
							param.success && param.success(res)
							// 隐藏键盘（防止扫码后键盘残留）
							uni.hideKeyboard()
						}
					}
				})
				break

			default: // 其他设备（默认使用原生扫码功能）
				// 调用uni-app的原生扫码API
				uni.scanCode({
					// 是否仅从相机扫码（默认true，不允许从相册选择）
					onlyFromCamera: param.onlyFromCamera ?? true,
					// 支持的扫码类型（默认仅支持二维码）
					scanType: param.scanType ?? ['qrCode'],
					// 扫码成功的回调处理
					success: function (res) {
						// 执行用户传入的成功回调
						param.success && param.success(res)
						// 隐藏键盘
						uni.hideKeyboard()
					},
					// 扫码完成（无论成功失败）的回调
					complete: () => {
						// 可在此处添加扫码完成后的通用处理逻辑
					}
				})
				break
		}
	}
}